package gui;

import javax.swing.*;

import service.Service;

import java.util.*;

import model.*;
import java.awt.Panel;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.List;
import java.awt.Color;

/**
 * 
 * @author Chritian
 *
 */

public class DrageringFrame extends JDialog {
	private ArrayList<DelBehandling> ikkeKlar, klar;
	private Panel panel, panel_1;
	private JLabel lblMellemvareTilDragering, lblMellemvareKlarTil, lblException;
	private Button naesteDelBehandling, luk;
	private JList listIkkeKlar, listKlar;
	private ActionListener actionListner = new ButtonActionListener();
	
	public DrageringFrame(){
		this.setModal(true);
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		this.setTitle("Mellemvare til dragering");
		this.setLocation(150, 150);
		this.setSize(456, 324);
		getContentPane().setLayout(null);
		ikkeKlar = new ArrayList<DelBehandling>();
		klar = new ArrayList<DelBehandling>();
		panel = new Panel();
		panel.setBounds(10, 32, 197, 195);
		getContentPane().add(panel);
		panel.setLayout(null);
		
		listIkkeKlar = new JList();
		listIkkeKlar.setBounds(10, 11, 177, 173);
		panel.add(listIkkeKlar);
		for(Behandling bh: Service.getInstance().getBehandlinger()){
			for(DelBehandling db : bh.getDelbehandlinger()) {
				if(db instanceof DrageringBehandling){
					if(db.getTimeStamps().size() > 0) {
						if(db.getPlukkeklar() == PlukkeklarEnum.OPTIMAL)
							klar.add(db);
						else if(db.getPlukkeklar() == PlukkeklarEnum.IKKEKLAR)
							ikkeKlar.add(db);
					}
				}
			}
		}
		if(ikkeKlar.size()> 0){
			listIkkeKlar.setListData(ikkeKlar.toArray());
		}
		
		panel_1 = new Panel();
		panel_1.setBounds(228, 32, 197, 195);
		getContentPane().add(panel_1);
		panel_1.setLayout(null);
		
		listKlar = new JList();
		listKlar.setBounds(10, 11, 177, 173);
		listIkkeKlar.setEnabled(false);
		panel_1.add(listKlar);
		if(klar.size() > 0 ){
			listKlar.setListData(klar.toArray());
		}
		
		lblMellemvareTilDragering = new JLabel("Mellemvare til dragering");
		lblMellemvareTilDragering.setBounds(10, 11, 197, 14);
		getContentPane().add(lblMellemvareTilDragering);
		
		lblMellemvareKlarTil = new JLabel("Mellemvare f\u00E6rdige med dragering");
		lblMellemvareKlarTil.setBounds(228, 11, 202, 14);
		getContentPane().add(lblMellemvareKlarTil);
		
		naesteDelBehandling = new Button("N\u00E6ste delbehandling");
		naesteDelBehandling.addActionListener(actionListner);
		naesteDelBehandling.setBounds(213, 255, 139, 22);
		getContentPane().add(naesteDelBehandling);
		
		luk = new Button("Luk");
		luk.setBounds(360, 255, 70, 22);
		luk.addActionListener(actionListner);
		getContentPane().add(luk);	
		
		lblException = new JLabel("");
		lblException.setForeground(Color.RED);
		lblException.setBounds(10, 255, 207, 14);
		getContentPane().add(lblException);
	}
	
	private class ButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			try{
				if(e.getSource().equals(naesteDelBehandling)){
					DelBehandling d = (DelBehandling) listKlar.getSelectedValue();
					Service.getInstance().naesteBehandling(d.getBehandling());
					klar.remove(d);
					listKlar.setListData(klar.toArray());
					setVisible(false);
				}
				else if(e.getSource().equals(luk))
					setVisible(false);	
			}
			catch(Exception ex){
				lblException.setText("Ingen dragering valgt");
			}
		}
	}
}
